Workflow systems represent the application of technology to process management. A workflow is an organized set of interrelated tasks that define the operational aspect of a process or procedure. In particular, a workflow defines how tasks are structured, which entities are responsible and relative ordering of tasks, among other things. A workflow facilitates automated design, control and monitoring of processes.
One widely known workflow is the enterprise workflow. A workflow in this domain automates business processes such that documents, information or tasks are passed to individuals for action in accordance with procedural rules. For instance, a worker performs some designated work in a sequence. Subsequently, work by others can be initiated after the worker completes their task. In effect, delivery of work is automated and controlled based on completion of precedent tasks. By way of example, a loan evaluation or approval process could be represented as a workflow.
Workflow can also be associated with computer systems and functionality associate therewith, rather than solely human tasks. For example, workflows can be defined to facilitate data transformation services including processing, cleansing and storing data in a data warehouse, amongst other things.
A workflow management system facilitates creation or a workflow and management of workflow execution. First, a workflow or workflow diagram is created utilizing a process modeling notation or language. Such a notation is a conventionally a graphical representation of objects such as data flow, control and connection objects and relationships amongst objects. Through this language or notation, processes can be developed utilizing what is sometimes referred to as a workflow modeling component, build time system or design system.
In one conventional implementation, packages represent a unit of work that can be independently retrieved, executed and/or saved. Furthermore, the package serves as a container for all other elements broadly characterized as control flow or data flow.
Control flow elements dictate processing sequence in a package and can include one or more containers to define package structure, tasks that define package functionality or work and precedent constraints that link executables, containers and tasks and specify the order of execution of the linked objects. Control flow elements prepare or copy data, interact with other processes or implement repeating workflow.
One particular type of control flow element is the for-each loop container. The container specifies a workflow that is to be executed for each element of a collection of like elements. In other words, for each collection element do something. The collection elements are provided by an enumerator for a collection of a particular data type. As a result, there are a plurality of enumerators associated with particular collection types including a files, variables, row sets, server objects and XML nodes.
Data flow elements including source adapters, transformations and destination adapters, as the name suggests, define the flow of data in a package that extracts, transforms and loads data. Source adapters make data available to a data flow. Transformations perform modifications to data such as aggregation (average, sum), merging (of multiple input data sets), distribution (to different outputs) and data type conversion. Destination adapters load output of the data flow into target repositories such as flat files, databases or memory.
In addition to a design or build-time component, a workflow management system also includes an execution management component or run-time system. Such a system can include a workflow engine that coordinates performance of process or task steps defined by a workflow. Stated differently, the workflow engine enforces specified control flow and precedent constraints or manages execution of a workflow object model.